/*
 * Input.h
 *
 *  Created on: 2 Nov 2012
 *      Author: guy
 */

#ifndef INPUT_H_
#define INPUT_H_

#include <SDL/SDL.h>
#include "types/Vector2D.h"



namespace SolidityEngine {

class Input {
    static bool _mousedown[3];
    static bool _mouseup[3];
    static bool _mouseon[3];
    static Vector2D _mousepos;
    static bool _exit;
    static SDLKey _keydown;
    static SDLKey _keyup;
    static bool _keysPressed[323];

public:
	Input();
	virtual ~Input();

    enum MouseButton{
        MOUSELEFT,
        MOUSEMIDDLE,
        MOUSERIGHT
    };

	static bool GetMouseButtonDown(int button);

	static bool GetMouseButtonUp(int button);

	static bool GetMouseButton(int button);

	static Vector2D& MousePosition();

	static bool GetKey(const SDLKey& key);

	static bool GetKeyDown(const SDLKey& key);

	static bool GetKeyUp(const SDLKey& key);

	static bool Exit();

    static void Update();

};

} /* namespace SolidCore */
#endif /* INPUT_H_ */
